package demo02;

/*
 *  创建多线程的第二种方式：创建Runnable接口的实现类
 *  java.lang.Runnable接口：实现该接口的类会需要通过一个线程对象执行自己的实例
 *      该实现类需要重写run方法，代表布置的线程任务
 *  java.lang.Thread类下有两个构造方法，可以填入Runnable接口的实现类参数：
 *      public Thread(Runnable target)：分配一个带有指定目标的新线程对象
 *      public Thread(Runnable target,String name)：分配一个带有指定目标的新线程对象并指定名字
 * 
 *  实现步骤：
 *      1. 创建一个Runnable接口的实现类
 *      2. 在实现类中重写Runnable接口的run方法，设置线程任务
 *      3. 创建一个Runnable接口的实现类对象
 *      4. 创建Thread类对象，构造方法参数传递Runnable接口的实现类对象
 *      5. 调用Thread类的start方法，启动线程
 */
public class Demo02Runnable {
    public static void main(String[] args) {
        Runnable runnable = new RunnableImpl(); // 3. 创建一个Runnable接口的实现类对象
        Thread thread = new Thread(runnable); // 4. 创建Thread类对象，构造方法参数传递Runnable接口的实现类对象
        thread.start(); // 5. 调用Thread类的start方法，启动线程
        thread.run(); // 在主线程中调用RunnableImpl类的run方法
        /*
         *  输出结果：main线程与Thread-0线程并发执行，结果在两个线程间随机打印
         */
    }
}
